#ifndef __RTC_DRV_H__
#define __RTC_DRV_H__

#include "gd32f30x.h"
#include <time.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>

typedef struct {
    uint16_t year;
    uint8_t month;
    uint8_t day;
    uint8_t hour;
    uint8_t minute;
    uint8_t second;
} RtcTime_t; // RTC时钟结构体

// RTC重置识别码 保存在BKP区域
#define MAGIC_CODE    0x5A5A  
// RTC中断优先级
#define RtcIrqPriority  1,2
// 时区偏置
#define TIMEZONE_OFFSET_HOURS 8
#define TIMEZONE_OFFSET_SECONDS (TIMEZONE_OFFSET_HOURS * 3600)

void RtcDrvInit(const RtcTime_t* time);

void SetRtcTime(const RtcTime_t* time);

void GetRtcTime(RtcTime_t* time);

// RTC闹钟开启 必须打开外部中断17才会起作用
void RtcAlarmInit(const RtcTime_t* time);

void SetRtcAlarm(const RtcTime_t* time);

#endif // __RTC_DRV_H__
